Skip to content

feat(spec)!: 退役 DriverCapabilities 31 个零读者能力位 —— 全表活性审计,3 活 31 死(#4634,ADR-0049) - #4783

Merged
os-zhuang merged 4 commits into
mainfrom
claude/issue-4634-driver-capabilities-liveness
Aug 3, 2026
Merged

feat(spec)!: 退役 DriverCapabilities 31 个零读者能力位 —— 全表活性审计,3 活 31 死(#4634,ADR-0049)#4783
os-zhuang merged 4 commits into
mainfrom
claude/issue-4634-driver-capabilities-liveness

Conversation

@os-zhuang

@os-zhuang os-zhuang commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Fixes #4634

按 issue 自述倾向(路线 2,PM 派发批准):先对 DriverCapabilitiesSchema 全部 34 个能力位做一次两仓活性审计,再按结果一次性处置。结论:3 位有决策读者(保留),31 位零读者(全部 retiredKey() 墓碑退役)

审计方法

三仓实测(objectstack 本分支基线 / cloud@5df2c69 / objectui@origin/main ca58e45),检索模式覆盖:.supports.位名 直读、supports?.位名 可选链、supports[ 括号访问、= driver.supports 别名后再读、capabilities.位名(DriverConfig 侧)、31 个位名逐个裸名交叉扫。对每个疑似读者按「声明 → 注册 → 访问器 → 调用方」闭合调用图;对最可能有隐藏读者的位(transactions/queryAggregations/schemaSync/fullTextSearch)额外验证了引擎的真实门控机制(见表)。objectui 对 .supports / DriverCapabilities / 各位名零引用

审计表(位 → 读者站点 / 零读者 → 处置)

活位(3)——方法存在性无法携带信号的位,保留:

读者站点 处置
queryDateGranularity packages/objectql/src/engine.ts:5053(聚合分派:native date bucketing vs in-memory 回退)、packages/verify/src/date-bucket-parity.ts:193(parity 探针);cloud driver-turso 在 remote 模式覆写它修假能力,正是该位的类型场景 保留
autonumber packages/objectql/src/engine.ts:4182(引擎让渡自增生成给 driver,免预填) 保留
batchSchemaSync packages/objectql/src/engine.ts:5334packages/objectql/src/plugin.ts:1023(两处均与 typeof driver.syncSchemasBatch === 'function' AND:基类可继承方法而传输层不真能批量) 保留;.default(false).optional()(两处读者本就按 truthy 消费,缺省=false 语义不变,空对象 {} 成为合法最小广告)

死位(31)——两仓零读者,全部墓碑退役;prescription 逐位指明真实机制(#4001 教训):

零读者证据 / 真实机制 处置
create / read / update / delete CRUD 方法是 IDataDriver 必选项,引擎无条件直调;位从未被查询 墓碑
bulkCreate / bulkUpdate / bulkDelete bulk 方法必选、直调;wire 层批量能力由 REST discovery 从实际组合推导(#3298 transactionalBatch,rest-server.ts:2461-2479),从不读此 record 墓碑
transactions 引擎按方法存在性门控:driver?.beginTransaction(engine.ts:5187,5672);无方法走非事务回退,位说什么都不改变行为 墓碑
savepoints 引擎无任何 savepoint 路径 墓碑
isolationLevels 隔离级别按次经 beginTransaction({ isolationLevel }) 传入;无规划器读此列表 墓碑
queryFilters / querySorting / queryPagination find() 收到完整 QueryAST 且必须全量执行;describe 承诺的「ObjectQL will … in memory」回退从未存在 墓碑
queryAggregations 聚合下推由 typeof drv.aggregate === 'function' + queryDateGranularity 决定(engine.ts:5069),从不看此位 墓碑
queryWindowFunctions / querySubqueries / queryCTE / joins ObjectQL 不经 driver 规划窗口函数/子查询/CTE/JOIN(关联数据由引擎 lookup 展开) 墓碑
fullTextSearch $search 由引擎编译为 searchable 字段的 $or+$contains 并在 driver 之前从 AST 删除(ADR-0061);无 driver 侧全文路径 墓碑
jsonQuery / geospatialQuery / vectorSearch 平台无对应查询路径;vectorSearch 的 RAG 场景不经 IDataDriver。未来能力按 enforce-or-remove 的诚实顺序「随调用方一起来」 墓碑
streaming 唯一可能描述的 findStream 已删(#4484);且零读者让写错的值三个版本无人发现:SqlDriver 声明 false 却实现了 findStream,InMemoryDriver 声明 true 却全表物化 墓碑(prescription 含 #4484 故事与 find() 分页替代)
jsonFields / arrayFields 字段类型处理由 driver 在 syncSchema 时自行协商(如 SqlDriver 逐对象 JSON/date 列跟踪);引擎不读位 墓碑
schemaSync 门控是 typeof driver.syncSchema === 'function'(engine.ts:5337,5387plugin.ts:1000) 墓碑
migrations 无迁移引擎读它 墓碑
indexes 声明式索引由 driver 在 schema sync 期自行物化(SqlDriver.syncDeclaredIndexes) 墓碑
connectionPooling / preparedStatements / queryCache 纯运营自述:池配置走 poolConfig;参数化执行是 execute(command, parameters) 的实现细节;无查询缓存层;DriverOptions.skipCache 是逐调用提示,与位无关 墓碑

存续契约(已写进 schema 头注):能力位只在方法存在性无法携带信号时存在;其余「支持什么」由实现哪些方法表达。这就是 31 个死位积累的机理——每个位都是给「方法本身已是信号」或「调用方根本不存在」的行为发的布尔。

issue 证据更正

issue 写站证据里的 packages/spec/src/api/registry.example.ts:219packages/core/API_REGISTRY.md:306 实为 gRPC protocolConfig.streaming(api/registry.zod.ts 自由格式协议元数据,见其 :481-488 的 gRPC 示例),与 DriverCapabilities.streaming 同名不同键,本 PR 不触碰(亦符合区域约束:api 域不动)。DriverCapabilities.streaming 的真实写站只有三个 driver 字面量。

路线与 ADR-0087 论证(#4734 / #4767 两种先例逐条对照)

实施清单

  • data/driver.zod.ts:31 位 retiredKey() + 头注契约声明;batchSchemaSync optional 化
  • data/driver-sql.zod.ts / driver-nosql.zod.ts:TSDoc @example 的 capabilities 块收敛为活位
  • migrations/registry.ts:step17.semantic 追加 D3 条目
  • driver 字面量:memory {} / mongodb { batchSchemaSync: true } / sql { queryDateGranularity, autonumber: true, batchSchemaSync: false }(sqlite-wasm 继承 sql)
  • 测试:data/driver.test.ts 重写(31 位逐位 parse 拒绝 pin + prescription 断言 + compiler-API 反空转 pin:34 键形状、退役位类型坍缩为 undefined、活位可写);driver-sql/nosql.test.tscontracts/data-driver/data-engine.test.ts、driver-memory/sql/sqlite-wasm 三包测试同步
  • 生成物:authorable-surface 31 行 [RETIRED];spec-changes / upgrade-guide / references(driver、driver-sql、driver-nosql)再生成;api-surface / json-schema.manifest 无键级变化(manifest 只记 def 清单)
  • 文档:query-syntax.mdx 全文检索节的 supports.fullTextSearch 旁注改指本次退役;releases/ 未触碰
  • changeset:spec + 三 driver 包 major,FROM→TO 与一行修复齐备

Sabotage(均实跑后还原)

S1 —— schema 复活死位(streaming 改回 z.boolean().default(false)):

❯ src/data/driver.test.ts (51 tests | 5 failed)
  × declares exactly the audited shape: 3 live bits + 31 tombstones
  × REJECTS an authored `streaming`, with the prescription in the message
  × the streaming prescription carries the #4484 findStream story and the paged-find fix
  × still parses the live bits cleanly — the tombstones reject a key, not the record
  × types every retired bit as authored-unwritable and every live bit is writable

S2 —— driver 字面量复活死位(memory supports = { streaming: true }):

src/memory-driver.ts(182,12): error TS2416: Property 'supports' in type 'InMemoryDriver'
is not assignable to the same property in base type 'IDataDriver'.
    Types of property 'streaming' are incompatible.
      Type 'boolean' is not assignable to type 'undefined'.

验证(基线 main@e6ac4bdac,含 C10 #4767 与 C17 #4768,合并后全量复验)

  • check:generated 8/8
  • 源码审计组 8/8 ✓:liveness、empty-state、skill-examples、react-declaration-parity、variant-docs、strictness-ledger(实跑)、exported-any、dual-source-exports(main 基线现为 2,本 PR 不动)
  • check:authorable-surface ✓(31 行 live→[RETIRED],门禁 (b) 由 D3 semantic 满足;无删行,不触发 authorable-surface 的 tombstone 门禁可被手编基线绕过 —— 删掉基线行就删掉了证据(#4638 / #4643 已两次这样过绿) #4650 三证)
  • check:api-surface ✓(导出集合不变——本次是键级收窄,快照对其天然盲,故 compiler-API pin 补位)
  • spec:293 文件 7377 测试全绿(含 C17 新增用例);spec typecheck ✓;前一轮基线上全仓 typecheck 122 任务全绿
  • driver 四包(memory/mongodb/sql/sqlite-wasm)typecheck + test 13 任务全绿;objectql / verify / metadata 三包 typecheck + test 全绿(前一轮基线)
  • ratchet 纪律:每次合并 main,authorable-surface.json / json-schema.manifest.json / dual-source-exports.baseline.json / docs-import-surface.baseline.json 一律先取 main 版再以合并后源码重生成,绝不文本合并。C10 那轮实测确曾被 auto-merge 静默复活 46 行已删基线(修正 commit 91130a16 即证据);C17 这轮重放后与 main 逐字节一致,C10 的 system/EnvironmentArtifact* 与 C17 的 studio/Action def 删键零残留,相对 main 的生成物差异仅剩 authorable-surface.json 的 31 行(live→[RETIRED],无键增删)与 spec-changes.json 的本单条目

跨仓影响

  • cloud 不破(实测论证):TursoDriver 经 ...super.supports 展开 + getter 覆写,多余属性不违反结构子型,继续编译;其显式覆写的 5 个死位与 ControlPlaneProxyDriver 的 off-spec fallback 属清理项 → cloud#1028(未认领)
  • objectui 零引用,无影响

随手发现(Prime Directive #10,均未认领)

claude added 3 commits August 3, 2026 06:09
#4484 findStream 收尾发现 streaming 位指向已删除的契约方法;按 issue 自述倾向对
DriverCapabilitiesSchema 全部 34 位做两仓活性审计(objectstack + cloud,objectui
零引用确认):仅 queryDateGranularity(engine 聚合分派 + date-bucket parity)、
autonumber(engine 让渡自增生成)、batchSchemaSync(engine 与方法存在性 AND)
三位有决策读者;其余 31 位人人写、无人读,describe 承诺的引擎降级路径从未存在,
且零读者让写错的值(SqlDriver streaming:false 却实现 findStream;InMemoryDriver
streaming:true 却全表物化)三个版本无人发现 —— ADR-0078 假可供性。

- driver.zod.ts:31 位 retiredKey() 墓碑(非 strict schema,裸删会被静默剥离;
  DriverConfigSchema.capabilities 及 SQL/NoSQL 扩展确有 parse 路径),逐位
  prescription 指明真实机制(方法存在性门控:beginTransaction / aggregate /
  syncSchema;#4001 教训);batchSchemaSync .default(false) → .optional()
  (两处读者本就按缺省=false 消费)
- ADR-0087 评估(#4484/#4764 先例):driver 是代码不是 stack 树元数据,
  supports 字面量在 driver 类里、DriverConfig 是插件 TS 配置,均非 sys_metadata
  形态(stack 树近邻 datasource.capabilities 已于 #4583 单独退役)⇒ 不登记 D2
  conversion,登记 D3 semantic migration driver-capabilities-inert-bits-removed
- driver 字面量同步:memory {} / mongodb { batchSchemaSync: true } /
  sql { queryDateGranularity, autonumber, batchSchemaSync: false }
- 回归 pin(driver.test.ts):31 位逐位 parse 拒绝 + prescription 断言;
  compiler-API 断言 34 键形状且退役位类型坍缩为 undefined、活位可写(反空转
  守卫);S1(schema 复活 streaming)5 pin 红、S2(driver 字面量复活)TS2416
  红,均实跑验证后还原
- 生成物:authorable-surface 31 行 [RETIRED]、spec-changes / upgrade-guide /
  references docs 全量再生成;14 项 spec 门禁全绿,全仓 typecheck 122 任务绿
- changeset:spec + 三 driver 包 major,FROM→TO 映射与一行修复齐备

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
json-schema.manifest.json / authorable-surface.json / dual-source-exports.baseline.json
一律先取 origin/main 版本(避免静默复活 C10 蓄意删除的 system/EnvironmentArtifact*
键),再以合并后源码全量重跑 gen:schema/check:generated:DriverCapabilities 31 行
[RETIRED] 由生成器重新写入,manifest 与 authorable-surface 中 C10 删键保持已删
(实测两文件 system/EnvironmentArtifact 零残留)。8/8 生成物门禁 + 8 项源码审计
全 PASS,spec 292 文件 7374 测试全绿。

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 3, 2026 6:40am

Request Review

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 4 package(s): @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec.

111 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via packages/spec)
  • content/docs/concepts/north-star.mdx (via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/deployment/vercel.mdx (via @objectstack/driver-memory)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/glossary.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via packages/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via packages/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec)
  • content/docs/kernel/services.mdx (via @objectstack/spec)
  • content/docs/permissions/authentication.mdx (via @objectstack/driver-memory)
  • content/docs/permissions/authorization.mdx (via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/anatomy.mdx (via @objectstack/driver-sql)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/driver-memory, @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/driver-sql, @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/driver-sql, @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/runtime-capabilities.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx (via @objectstack/driver-memory, @objectstack/driver-mongodb, @objectstack/driver-sql, @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.mdx (via @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

@os-zhuang
os-zhuang marked this pull request as ready for review August 3, 2026 06:42
@os-zhuang
os-zhuang enabled auto-merge August 3, 2026 06:42
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 3, 2026
Merged via the queue into main with commit d9fa683 Aug 3, 2026
23 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-4634-driver-capabilities-liveness branch August 3, 2026 07:07
os-zhuang pushed a commit that referenced this pull request Aug 3, 2026
合并 #4768(C17)/ #4786 / #4780 / #4783(#4634,31 位能力位退役)后重生成。

按 #4535 §7 与「rebase/merge 静默回退」纪律处理三张 ratchet:
`dual-source-exports.baseline.json` / `authorable-surface.json` /
`json-schema.manifest.json`(+ `api-surface.json`)一律 `git checkout
origin/main --` 取 main 版本后全量重跑生成器,只重施本 PR 的一处改动。
其中 json-schema.manifest.json 与 authorable-surface.json 归 os-regen
merge driver 管、合并不产生冲突标记,最易静默回退,故以 gen:schema 实跑
输出为准。

逐项确认他人蓄意变更未被回滚(regen 后实测):
- #4783 `data/DriverCapabilities:*` 31 行 [RETIRED] + 3 行存活 —— 均在
- C10 `system/EnvironmentArtifact*` 删除 —— 仍为 0
- C17 `studio/ActionLocation` → `studio/ActionContributionLocation` —— 旧 0 新 1
- 本 PR `kernel/PackageDependency` → `kernel/ResolvedPackageDependency` —— 旧 0 新 1

`renamed-defs.ts` 冲突为两条独立改名条目并存(C17 与本簇),按时序保留两条。

dual-source 基线 2 → **0**(entries: []),#4535 第二批收官、双源账目归零。

Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9

Co-authored-by: Claude <noreply@anthropic.com>
os-zhuang pushed a commit that referenced this pull request Aug 3, 2026
…rename must not ride out on this branch

`git merge origin/main` brought in #4789 (kernel PackageDependencySchema ->
ResolvedPackageDependencySchema, dual-source C7), which touches the same three
generated artifacts this branch does. The merge reported NO conflicts and left
NO conflict markers, and it was wrong in all three:

  api-surface.json         re-added `PackageDependency (type)` +
                           `PackageDependencySchema (const)` and dropped
                           `ResolvedPackageDependency(Schema)`
  authorable-surface.json  re-added the 4 `kernel/PackageDependency:*` lines and
                           dropped the 4 `kernel/ResolvedPackageDependency:*` ones
  json-schema.manifest.json re-added `kernel/PackageDependency` and dropped
                           `kernel/ResolvedPackageDependency`

json-schema.manifest.json is routed to the `merge=os-regen` driver, which defers
rather than regenerates, so nothing textual signals this — the C17/C10 silent
revert, reproduced. `git merge-tree` does not run external merge drivers and so
cannot see it either.

Resolved the way #4783 did, without any textual merge: reset all three (plus
api-surface-signatures.json) to origin/main, re-applied ONLY this PR's own
deletion to the two hand-ratcheted files, then re-ran the generators over the
merged source. The 22 authorable-surface lines and 4 manifest keys are once
again deliberate deletions, now anchored at merge base ffab803, which
gen:schema re-proved under #4650 route 3 ("def no longer emitted by this
build").

Delta vs origin/main is now pure deletion in all three, with #4789's rename
intact:

  api-surface.json          -8  (4 const + 4 type), 0 insertions
  authorable-surface.json  -22  lines,              0 insertions
  json-schema.manifest.json -4  keys,               0 insertions

check:dual-source-exports reports 0 accepted dual-source (#4789's shrink to []
survives; this branch does not carry it back to 2). renamed-defs.ts is
byte-identical to main and keeps all 6 entries including #4789's.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation protocol:data size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DriverCapabilities.streaming 在 findStream 退休后指向不存在的能力,且从来没有读者(ADR-0049,#4484 收尾发现)

2 participants